class: center, middle, inverse, title-slide # Introducció a R i RStudio ## Tècniques de Recerca ### 2021-2022 --- ### Instal·lar R Descarregar des de https://cloud.r-project.org/ - **Windows**: Download R for Windows > base > Download - **Mac**: Download R for macOS > A _Latest release_ descarregar l'arxiu `pkg` corresponent a la versió d'OS #### ⚠️ Només Mac: Instal·lar XQuartz Descarregar l'arxiu `pkg` corresponent a la versió d'OS des de https://www.xquartz.org/ --- ### Instal·lar RStudio Descarregar des de https://www.rstudio.com/products/rstudio/download/ - Versió **RStudio Desktop** _Open Source License_ - Free > Download - Seleccionar versió d'OS corresponent --- ## Per començar a treballar .pull-left[ .large[Obriu sempre **aquest**] <img src="data:image/png;base64,#https://d33wubrfki0l68.cloudfront.net/62bcc8535a06077094ca3c29c383e37ad7334311/a263f/assets/img/logo.svg" width="75%" style="display: block; margin: auto;" /> ] -- .pull-right[ .large[No aquest!] <img src="data:image/png;base64,#https://cloud.r-project.org/Rlogo.svg" width="30%" style="display: block; margin: auto;" /> ] --- ## Configurar RStudio Menú Tools > Global Options... > General <img src="data:image/png;base64,#https://d33wubrfki0l68.cloudfront.net/7fa44a5471d40025344176ede4169c5ad3159482/1577f/screenshots/rstudio-workspace.png" width="60%" style="display: block; margin: auto;" /> --- ## Anatomia d'RStudio .left-column[ #### Regions 1. Consola 1. Sortida 1. Entorn 1. (...) #### Pestanyes ] <img src="data:image/png;base64,#https://d33wubrfki0l68.cloudfront.net/9a23d664f0f49bc2ef8e78bed6277dd48bd2b96d/af132/diagrams/rstudio-console.png" width="70%" style="display: block; margin: auto 0 auto auto;" /> --- ## R com a calculadora ```r 1 + 1 ## [1] 2 3 * 2 ## [1] 6 3 ^ 2 ## [1] 9 10 + 6 / 2 ## [1] 13 ``` Recordeu l'ordre de les operacions (PEMDAS) - **P**arèntesi - **E**xponents - **M**ultiplicació - **D**ivisió - **A**ddicció - **S**ubstracció O millor, feu servir parèntesis! --- ## Objectes Creem objectes assignant-los un valor amb `<-` (drecera: `Alt` + `-`) I el podem examinar escrivint el seu nom i executant-lo pressionant _Enter_ ```r x <- 4 x ``` ``` ## [1] 4 ``` ```r y <- 3 * 2 y ``` ``` ## [1] 6 ``` ```r x + y ``` ``` ## [1] 10 ``` Fixeu-vos que els objectes creats apareixen a l'entorn (pestanya _Environment_). --- ## Objectes - Assignem valors de longitud i amplada ```r llarg <- 4 ample <- 3 ``` - Calculem l'àrea ```r area <- llarg * ample area ## [1] 12 ``` -- - Canviem els valors de longitud i amplada ```r llarg <- 7 ample <- 5 ``` - Quin serà ara el valor d'`area`? ```r area ``` --- ## Objectes - El valor no ha canviat ```r area ## [1] 12 ``` - Què caldria fer per "actualitzar" el valor d'`area`? -- ```r area <- llarg * ample area ## [1] 35 ``` --- ## Noms dels objectes - Han de començar amb una lletra - Només poden contenir lletres, números i `_` (guió baix) o `.` (punt) - No han de contenir .bg-yellow[espais] cap altre caràcter especial - Si heu de fer servir múltiples paraules, millor separar-les amb guió baix (`renda_per_capita`) o majúscules (`rendaPerCapita`) - R diferencia majúscules i minúscules! `renda` és diferent de `Renda` - Millor evitar l'ús d'accents - Hi ha noms prohibits: `function`, `for`, `TRUE`, `FALSE`, `Inf`, `NA`... - Un cop assignat un objecte, es guarda a l'entorn i el podem trobar escrivint els primers caràcters i pressionant TAB --- ## Funcions _Objectes_ que realitzen tot tipus de tasques Prenen **arguments** i executen la tasca demanada ```r nom_funcio(arg1 = val1, arg2 = val2, ...) ``` - Si no especifiquem els noms dels arguments, s'assumeix que van en l'ordre predeterminat - Si ometem un argument, pren el valor predeterminat (si és que en té) --- ## Exemple ### La funció `seq` ```r seq(from = 0, to = 6, by = 1) ``` ``` ## [1] 0 1 2 3 4 5 6 ``` ```r seq(0, 6) ``` ``` ## [1] 0 1 2 3 4 5 6 ``` ```r seq(to = 6, by = 2, from = 0) ``` ``` ## [1] 0 2 4 6 ``` --- ## Ajuda 🆘 Podem obtenir **ajuda** sobre una funció - Executant `?nom_funcio` - Prenent **F1** quan estem escrivint la funció - Des de la pestanya _Help_ <br> Mirem l'ajuda d'una funció ```r ?seq ``` - Fixeu-vos en la definició i l'ordre dels .bg-yellow[arguments] - Són molt útils els .bg-yellow[exemples] --- ## L'operador `:` Una drecera per fer seqüències amb increments (o decrements) de valor 1. ```r 0:10 ``` ``` ## [1] 0 1 2 3 4 5 6 7 8 9 10 ``` ```r 20:10 ``` ``` ## [1] 20 19 18 17 16 15 14 13 12 11 10 ``` ```r 5:-5 ``` ``` ## [1] 5 4 3 2 1 0 -1 -2 -3 -4 -5 ``` --- ## Errors 🚦 Sovint R ens tornarà .red[text vermell] amb alguna mena d'explicació - 🔴 **Error**: alguna cosa no ha funcionat, no executa l'objecte ```r seqq(0, 6, 2) ## Error in seqq(0, 6, 2): no se pudo encontrar la función "seqq" ``` - 🟡 **Warning**: executa el codi però ens avisa que alguna cosa pot ser preocupant ```r 1:7:3 ## Warning in 1:7:3: numerical expression has 7 elements: only the first used ## [1] 1 2 3 ``` - 🟢 **Missatge**: no identificat com _error_ o _warning_, merament informatiu --- ## Errors 🚦 Què fer? - Comprovar els error tipogràfics - Comprovar la paritat de parèntesis `()` i cometes `""` Si falla, R mostra el caràcter `+` - Mireu l'ajuda de la funció o funcions - Google: R + nom de la funció + explicació del problema (en anglès) --- ## Paquets Els paquets (_packages_) són conjunts de conjunts de funcions que amplien o faciliten les capacitats d'R Base. Per **instal·lar** els paquets podem - usar `install.packages("nom_del_paquet")`. Les cometes són importants. - clicar Install a la pestanya _Packages_ 🔎 Feu una ullada a aquesta pestanya Per usar les funcions d'un paquet les hem de **carregar**, amb `library(nom_del_paquet)` 📢 Important: - Instal·lem els paquets només un cop per **ordinador** - Carreguem els paquets que necessitem un cop per **sessió** --- ## Tidyverse Una família de paquets que comparteixen una mateixa filosofia. Els usarem constantment. - Instal·lar ```r install.packages("tidyverse") ``` - Carregar 👉 no patiu pels conflictes! ```r library(tidyverse) ## -- Attaching packages --------------------------------------- tidyverse 1.3.1 -- ## v ggplot2 3.3.5 v purrr 0.3.4 ## v tibble 3.1.2 v dplyr 1.0.7 ## v tidyr 1.1.3 v stringr 1.4.0 ## v readr 1.4.0 v forcats 0.5.1 ## -- Conflicts ------------------------------------------ tidyverse_conflicts() -- ## x dplyr::filter() masks stats::filter() ## x dplyr::lag() masks stats::lag() ``` --- ## Funcions de paquets Hi ha dues maneres d'utilitzar una funció d'un paquet que no es carrega per defecte (.bg-yellow[sempre que tingueu instal·lat el paquet!]): - Carregant el paquet amb `library()` es pot accedir a totes les seves funcions escrivint el seu nom ```r library(janitor) clean_names() ``` - Sense carregar tot el paquet (però tenint-lo instal·lat), escrivint el nom de la funció que volem usar precedit del nom del paquet i `::` ```r janitor::clean_names() ``` --- ## Scripts File > New File > R Script <img src="data:image/png;base64,#https://d33wubrfki0l68.cloudfront.net/8a64bb047429d7ae0e2acae35c40e421e6439bf6/80e5d/diagrams/rstudio-editor.png" width="70%" style="display: block; margin: auto;" /> --- ## Scripts - Arxiu `.r` - Executem codi (l'enviem a la consola) posant el cursor a sobre i pressionant **Cmd/Ctrl + Enter** - **Reproductibilitat**: cal incloure tot el necessari per poder reproduir l'anàlisi des de zero - Carregar paquets - Dades - Anàlisi - Comentaris --- ## Comentaris - Cal **comentar** el que fem: el text precedit d'un o més coixinets (`#`) és un comentari que R no avalua ```r # Carregar paquets library(tidyverse) ## Carregar dades dades <- read_csv(file = "les_meves_dades.csv") ## Anàlisi majors <- filter(dades, edat >= 18) # Selecciono majors d'edat mean(majors$ingressos) ``` --- ## Deures 💻 #### En aquest ordre (i si encara no ho heu fet) - Instal·lar R - Instal·lar RStudio - Obrir RStudio - Instal·lar el paquet **tidyverse** --- ## Exercici 1. Crear un script, i guardar-lo (on? 🤔) amb **tot** el codi necessari per realitzar l'exercici 2. Posar el vostre nom/s en un comentari al principi de tot ```r # Nom1 Cognom1, Nom2 Cognom2 ``` 3. Assignar el valor `2/3` a l'objecte `x` Executar l'objecte `x` per veure el seu contingut Examinar la funció `round` 👉 `?round` Arrodonir l'objecte `x` a 1 decimal 4. Crear un objecte `a` igual a 3 i un objecte `b` igual a 6 Executar `sum(a, b)` En un comentari, explicar el que fa la funció `sum()` 5. Lliurar l'script al Moodle, **individualment!** --- ## Llegir <br> - Çetinkaya-Rundel & Hardin: Capítol 1 - Mas Elias: pp. 15-38 - Ismay & Kim: secció 1.4